import { IPSSysDBTable } from './ipssys-dbtable';
import { IPSDataEntityObject } from '../dataentity/ipsdata-entity-object';
import { IPSDEField } from '../dataentity/defield/ipsdefield';

/**
 *
 * 子接口类型识别属性[]
 * @export
 * @interface IPSDEDBTable
 */
export interface IPSDEDBTable extends IPSDataEntityObject {
  /**
   * 相关属性集合
   *
   * @type {IPSDEField[]}
   */
  getAllPSDEFields(): IPSDEField[] | null;

  /**
   * 相关属性集合
   *
   * @type {IPSDEField[]}
   */
  get allPSDEFields(): IPSDEField[] | null;

  findPSDEField(objKey: any): IPSDEField | null;

  /**
   * 代码标识
   * @type {string}
   */
  codeName: string;

  /**
   * 关系数据库表
   *
   * @type {IPSSysDBTable}
   */
  getPSSysDBTable(): IPSSysDBTable | null;

  /**
   * 关系数据库表
   *
   * @type {IPSSysDBTable}
   */
  get psSysDBTable(): IPSSysDBTable | null;

  /**
   * 关系数据库表（必须存在）
   *
   * @type {IPSSysDBTable}
   */
  getPSSysDBTableMust(): IPSSysDBTable;

  /**
   * 实体表类型
   * @description 值模式 [实体表类型] {MAIN：主表、 USER：用户扩展表、 USER2：用户扩展表2 }
   * @type {( string | 'MAIN' | 'USER' | 'USER2')}
   */
  tableType: string | 'MAIN' | 'USER' | 'USER2';
}
